package ca.etsmtl.log120.tp3.tests;

import junit.framework.TestCase;
import ca.etsmtl.log120.tp3.cartes.Carte;
import ca.etsmtl.log120.tp3.cartes.CouleurCarte;
import ca.etsmtl.log120.tp3.cartes.Denomination;
import ca.etsmtl.log120.tp3.mains.Main;
import ca.etsmtl.log120.tp3.rangs.Carre;
import ca.etsmtl.log120.tp3.rangs.CarteSuperieure;
import ca.etsmtl.log120.tp3.rangs.Couleur;
import ca.etsmtl.log120.tp3.rangs.MainPleine;
import ca.etsmtl.log120.tp3.rangs.Paire;
import ca.etsmtl.log120.tp3.rangs.Quinte;
import ca.etsmtl.log120.tp3.rangs.QuinteCouleur;
import ca.etsmtl.log120.tp3.rangs.QuinteRoyale;
import ca.etsmtl.log120.tp3.rangs.Quintuplet;

public class DetectionMainTest extends TestCase{
	
	Main mainA, mainB, mainC, mainD, mainE, mainF, mainG, mainH, mainI;

	public DetectionMainTest(){
		mainA = new Main(); //RANG PAIRE
		mainA.add(new Carte(Denomination.DEUX, CouleurCarte.CARREAU));
		mainA.add(new Carte(Denomination.DEUX, CouleurCarte.CARREAU));
		mainA.add(new Carte(Denomination.TROIS, CouleurCarte.CARREAU));
		mainA.add(new Carte(Denomination.QUATRE, CouleurCarte.CARREAU));
		mainA.add(new Carte(Denomination.SIX, CouleurCarte.PIQUE));

		mainB = new Main(); //RANG MAIN PLEINE
		mainB.add(new Carte(Denomination.DEUX, CouleurCarte.CARREAU));
		mainB.add(new Carte(Denomination.DEUX, CouleurCarte.CARREAU));
		mainB.add(new Carte(Denomination.AS, CouleurCarte.CARREAU));
		mainB.add(new Carte(Denomination.AS, CouleurCarte.CARREAU));
		mainB.add(new Carte(Denomination.AS, CouleurCarte.PIQUE));

		mainC = new Main(); //RANG COULEUR
		mainC.add(new Carte(Denomination.DEUX, CouleurCarte.CARREAU));
		mainC.add(new Carte(Denomination.DEUX, CouleurCarte.CARREAU));
		mainC.add(new Carte(Denomination.DEUX, CouleurCarte.CARREAU));
		mainC.add(new Carte(Denomination.QUATRE, CouleurCarte.CARREAU));
		mainC.add(new Carte(Denomination.TROIS, CouleurCarte.CARREAU));
		
		mainD = new Main(); //RANG CARTE SUPERIEURE
		mainD.add(new Carte(Denomination.AS, CouleurCarte.PIQUE));
		mainD.add(new Carte(Denomination.SEPT, CouleurCarte.CARREAU));
		mainD.add(new Carte(Denomination.DEUX, CouleurCarte.CARREAU));
		mainD.add(new Carte(Denomination.QUATRE, CouleurCarte.CARREAU));
		mainD.add(new Carte(Denomination.TROIS, CouleurCarte.CARREAU));
		
		mainE = new Main(); //RANG CARTE QUINTE
		mainE.add(new Carte(Denomination.SEPT, CouleurCarte.PIQUE));
		mainE.add(new Carte(Denomination.SIX, CouleurCarte.CARREAU));
		mainE.add(new Carte(Denomination.CINQ, CouleurCarte.CARREAU));
		mainE.add(new Carte(Denomination.QUATRE, CouleurCarte.CARREAU));
		mainE.add(new Carte(Denomination.TROIS, CouleurCarte.CARREAU));
		
		mainF = new Main(); //RANG CARTE QUINTECOULEUR
		mainF.add(new Carte(Denomination.SIX, CouleurCarte.CARREAU));
		mainF.add(new Carte(Denomination.SEPT, CouleurCarte.CARREAU));
		mainF.add(new Carte(Denomination.CINQ, CouleurCarte.CARREAU));
		mainF.add(new Carte(Denomination.QUATRE, CouleurCarte.CARREAU));
		mainF.add(new Carte(Denomination.TROIS, CouleurCarte.CARREAU));
		
		mainG = new Main(); //RANG CARTE QUINTE ROYALE
		mainG.add(new Carte(Denomination.AS, CouleurCarte.CARREAU));
		mainG.add(new Carte(Denomination.ROI, CouleurCarte.CARREAU));
		mainG.add(new Carte(Denomination.DAME, CouleurCarte.CARREAU));
		mainG.add(new Carte(Denomination.VALET, CouleurCarte.CARREAU));
		mainG.add(new Carte(Denomination.DIX, CouleurCarte.CARREAU));
		
		mainH = new Main(); //RANG CARTE QUINTUPLET
		mainH.add(new Carte(Denomination.TROIS, CouleurCarte.PIQUE));
		mainH.add(new Carte(Denomination.TROIS, CouleurCarte.CARREAU));
		mainH.add(new Carte(Denomination.TROIS, CouleurCarte.CARREAU));
		mainH.add(new Carte(Denomination.TROIS, CouleurCarte.CARREAU));
		mainH.add(new Carte(Denomination.TROIS, CouleurCarte.CARREAU));
		
		mainI = new Main(); //RANG CARTE CARRE
		mainI.add(new Carte(Denomination.TROIS, CouleurCarte.PIQUE));
		mainI.add(new Carte(Denomination.TROIS, CouleurCarte.CARREAU));
		mainI.add(new Carte(Denomination.TROIS, CouleurCarte.CARREAU));
		mainI.add(new Carte(Denomination.TROIS, CouleurCarte.CARREAU));
		mainI.add(new Carte(Denomination.QUATRE, CouleurCarte.CARREAU));
	}
	
	public void testDetectionPaire(){
		assertEquals(new Paire().getClass(), mainA.getRangPoker().getClass());
	}
	
	public void testDetectionMainPlein(){
		assertEquals(new MainPleine().getClass(), mainB.getRangPoker().getClass());
	}
	
	public void testDetectionCouleur(){
		assertEquals(new Couleur().getClass(), mainC.getRangPoker().getClass());
	}
	
	public void testDetectionCarteSuperieure(){
		assertEquals(new CarteSuperieure().getClass(), mainD.getRangPoker().getClass());
	}
	
	public void testDetectionQuinte(){
		assertEquals(new Quinte().getClass(), mainE.getRangPoker().getClass());
	}
	
	public void testDetectionQuinteCouleur(){
		assertEquals(new QuinteCouleur().getClass(), mainF.getRangPoker().getClass());
	}
	
	public void testDetectionQuinteRoyale(){
		assertEquals(new QuinteRoyale().getClass(), mainG.getRangPoker().getClass());
	}
	
	public void testDetectionQuintuplet(){
		assertEquals(new Quintuplet().getClass(), mainH.getRangPoker().getClass());
	}
	
	public void testDetectionCarre(){
		assertEquals(new Carre().getClass(), mainI.getRangPoker().getClass());
	}

}
